switch (babl->class_type)
{
case BABL_FISH_REFERENCE:
- case BABL_FISH_SIMPLE:
- case BABL_FISH_PATH:
- if (babl->class_type == BABL_FISH_REFERENCE)
+ if (babl->fish.source == babl->fish.destination)
+ { /* XXX: we're assuming linear buffers */
+ memcpy (destination, source, n * babl->fish.source->format.bytes_per_pixel);
+ ret = n;
+ }
+ else
{
- if (babl->fish.source == babl->fish.destination)
- { /* XXX: we're assuming linear buffers */
- memcpy (destination, source, n * babl->fish.source->format.bytes_per_pixel);
- ret = n;
- }
- else
- {
- ret = babl_fish_reference_process (babl, source, destination, n);
- }
+ ret = babl_fish_reference_process (babl, source, destination, n);
}
- else if (babl->class_type == BABL_FISH_PATH)
+ break;
+
+ case BABL_FISH_SIMPLE:
+ if (BABL (babl->fish_simple.conversion)->class_type == BABL_CONVERSION_LINEAR)
{
- ret = babl_fish_path_process (babl, source, destination, n);
+ ret = babl_conversion_process (BABL (babl->fish_simple.conversion),
+ source, destination, n);
}
- else if (babl->class_type == BABL_FISH_SIMPLE)
+ else
{
- if (BABL (babl->fish_simple.conversion)->class_type == BABL_CONVERSION_LINEAR)
- {
- ret = babl_conversion_process (BABL (babl->fish_simple.conversion),
- source, destination, n);
- }
- else
- {
- babl_assert (0);
- }
+ babl_fatal ("Cannot use a simple fish to process without a linear conversion");
}
break;
+
+ case BABL_FISH_PATH:
+ ret = babl_fish_path_process (babl, source, destination, n);
+ break;
+
default:
babl_log ("NYI");
ret = -1;